package com.wy.io;

import java.io.*;

/**
 * @author 美女
 * @date 2022/05/13 17:45
 **/
//目录的复制
public class CopyDierctory {
    static String source="D:\\Users\\文件学习部分练习内容";
    static String dest="D:\\Users\\文件学习部分\\目标";
    public static void main(String[] args) throws IOException{
        File srcFile=new File(source);
        //看srcFile是否是目录
        if(!srcFile.isDirectory()){
            System.out.println("源不是目录");
            return;
        }
        File destFile=new File(dest);
        if(destFile.exists()){
            System.out.println("目标路径已经存在");
            return;
        }
        //开始复制
        //复制实际上就是个遍历过程
        traversal(srcFile,destFile);

    }

    private static void traversal (File dir, File destFile) throws IOException {
        File[] files=dir.listFiles();//得到dir中所有文件【获取目录下的所有孩子】
        if(files==null){
            return;
        }
        //遍历目录下的每个孩子
        for (File file:files){
            //遍历files
            if(file.isDirectory()){
                //是目录文件——给目标的相对应位置建一个一样的目录
                String path1 = file.getCanonicalPath();//当前源文件所在完整的的绝对路径
                //path1中把源的那一部分\Users\文件学习部分练习内容切掉
                String relative = path1.substring(source.length());//传入的是起始切割位置
                //拼接到目标路径上,得到最终目标路径
                String path2=dest+relative;
                //拿着path2创建File
                File file2=new File(path2);//路径是不存在的，开始建目录
                file2.mkdirs();
                traversal(file,destFile);
            }else if(file.isFile()){
                //是内容文件—通过InputStream和OutputStream读取到文件内容并进行复制



            }
        }
    }
}
